Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Використання макрокоманд та процедур. Ввід даних з клавіатури та вивід результату на екран

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
УІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Програмування частина 4 Технологія системного програмування

Частина тексту файла

Заданий вираз: X=A2*B1+C4/(K-E1*F1) K=10974759 Згідно з завданням, в кодовому сегменті повинен бути виклик трьох процедур та їх опис. Відповідно, структура програми буде мати такий вигляд. DOSSEG .MODEL SMALL ; опис макросів .STACK 100h .DATA ; опис необхідних даних .CODE mov ax,@data mov ds,ax call INPUT call CALCULATION call OUTPUT INPUT proc ;тіло процедури вводу ret INPUT endp CALCULATION proc ;тіло процедури обчислень ret CALCULATION endp OUTPUT proc ;тіло процедури виводу результатів ret OUTPUT endp mov ah,4Ch int 21h END Програма, що обраховує даний вираз була приведена в лабораторній роботі №3. Згідно з нею, вхідні дані повинні знаходитися в пам’яті за адресами від В до F, а результат – за міткою Х. Тепер, слід оформити цю програму у вигляді процедури та написати відповідні підпрограми, щоб забезпечити коректний ввід в десятковій формі, перевід в шістнадцяткову систему та зворотнє перетворення і вивід результату на екран. Підпрограма вводу. – INPUT, обчислень – CALCULATION, виводу – OUTPUT. Розглянемо можливості вводу даних. Це можна зробити двома способами: 1) для кожної змінної посимвольно вводити кожну цифру. В цьому випадку буде використовуватися функція 01h переривання 21h (оскільки функція 07h переривання 21h та функція 00 переривання 16h не забезпечують еховідображення, то їх використовувати в даному випадку недоцільно). В сегменті даних слід передбачити місце для зберігання введених символів. При чому, розмір відведеної пам’яті повинен дозволяти ввід змінної максимального розміру. В даному випадку змінна максимальний розмір має змінна С – 2 байт, тобто вона складається з 5 десяткових символів. Отже розмір тимчасової пам’яті для зберігання введених символів становить 5 байт. Значення в цьому місці пам’яті буде оновлюватися для кожної змінної. 2) вводити для кожної змінної рядок символів. В цьому випадку можна використати функцію 0Аh або 3Fh переривання 21h. При цьому у сегменті даних вимагається область вводу для кожної змінної, що значно збільшує об’єм коду і зрозумілість програми. Оскільки ввід даних для кожної змінної буде відбуватися однаково, то варто написати процедуру вводу, яка буде викликатися 4 рази, вводячи кожен раз різну кількість символів і записуючи результат вводу, переведений в 10-ий формат, в іншу область пам’яті (процедура input_variable). Процес перевірки одного введеного символу на приналежність до 10-ої системи числення теж опишемо як окрему процедуру (процедура CHECK_BYTE). Крім того, слід передбачити перевірки на коректність діапазону введених чисел (наприклад процедура Err1). При переводі в десяткову систему, використовується макрокоманда множення MY_MUL , яка дозволяє сформувати черговий множник, тобто степінь числа 10, та власне саме множення на нього. Процедура обчислень нічим не відрізняється від програми з лабораторної роботи №4. Тепер слід вивести результат, отриманий після обчислень, на екран в десятковому форматі. При формуванні десяткового результату слід проводити ділення на основу числення – 10 результату Х, який займає 4 байти. Для коректного ділення призначена підпрограма MY_DIV2. Безпосередній вивід утвореного числа здійснити двома способами: 1) посимвольно виводити кожну цифру. В цьому випадку буде використовуватися функція 02h або 06h переривання 21h і жодних змін в сегмент даних вносити не треба. 2) утворити рядок символів і вивести результат повністю. В цьому випадку можна використати функцію 09h або 40h переривання 21h, які потребують у сегменті даних області виводу (тобто місця під майбутній рядок символів). Згідно алгоритму перетворення, програма буде містити цикл, кількість повторів якого залежить від розміру результату (в байтах). В даному випадку цей розмір становить 4 байти. Зчитування даних повинно відбуватися послідовно по одному байту починаючи зі старшого. Оскільки змінна результату оголошена як слово, то щоб звернутися окремо до кожного байту слід використати директиву BYTE PTR та відносну адресацію через регістр [SI], зн...
Антиботан аватар за замовчуванням

19.12.2013 23:12

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини